/**
 * 用一组正则测试一个字符串，当且仅当
 * 满足所有正则表达式时结果返回 true，否则返回 false
 * @param regs 一组正则表达式
 * @param text 被测试的文本
 */
function regTestAll(regs: RegExp[], text: string, debug: boolean = false): boolean {
  const ary = regs.map((reg) => {
    return reg.test(text)
  })
  if (debug) {
    console.log(`------[debug for reg test]------ \nregs = ${regs} text = "${text}"`);
    console.log(ary, "=>", ary.some(x => x));
  }
  return ary.every(x => x);
}

/**
 * 用一组正则测试一个字符串，只要任意一个
 * 满足所有正则表达式时结果返回 true，否则返回 false
 * @param regs 一组正则表达式
 * @param text 被测试的文本
 */
function regTestAny(regs: RegExp[], text: string, debug: boolean = false): boolean {
  const ary = regs.map((reg) => {
    return reg.test(text)
  })
  if (debug) {
    console.log(`------[debug for reg test]------ \nregs = ${regs} \ntext = "${text}"`);
    console.log(ary, "=>", ary.some(x => x));
  }
  return ary.some(x => x);
}

export {
  regTestAll,
  regTestAny
}